Name: SomeKit
Classes:
  - Name: A
    Methods:
      - Selector:        "transform:"
        MethodKind:      Instance
        Availability:    none
        AvailabilityMsg: "anything but this"
      - Selector: "transform:integer:"
        MethodKind:      Instance
        NullabilityOfRet: N
        Nullability:      [ N, S ]
      - Selector: "implicitGetOnlyInstance"
        MethodKind:      Instance
        Availability:    none
        AvailabilityMsg: "getter gone"
      - Selector: "implicitGetOnlyClass"
        MethodKind:      Class
        Availability:    none
        AvailabilityMsg: "getter gone"
      - Selector: "implicitGetSetInstance"
        MethodKind:      Instance
        Availability:    none
        AvailabilityMsg: "getter gone"
      - Selector: "implicitGetSetClass"
        MethodKind:      Class
        Availability:    none
        AvailabilityMsg: "getter gone"
      - Selector: "setImplicitGetSetInstance:"
        MethodKind:      Instance
        Availability:    none
        AvailabilityMsg: "setter gone"
      - Selector: "setImplicitGetSetClass:"
        MethodKind:      Class
        Availability:    none
        AvailabilityMsg: "setter gone"
    Properties:
      - Name: intValue
        PropertyKind:    Instance
        Availability: none
        AvailabilityMsg: "wouldn't work anyway"
      - Name: nonnullAInstance
        PropertyKind:    Instance
        Nullability:     N
      - Name: nonnullAClass
        PropertyKind:    Class
        Nullability:     N
      - Name: nonnullABoth
        Nullability:     N
  - Name: B
    Availability: none
    AvailabilityMsg: "just don't"
  - Name: C
    Methods:
      - Selector: "initWithA:"
        MethodKind: Instance
        DesignatedInit: true
  - Name: OverriddenTypes
    Methods:
      - Selector: "methodToMangle:second:"
        MethodKind: Instance
        ResultType: 'char *'
        Parameters:
          - Position: 0
            Type: 'SOMEKIT_DOUBLE *'
          - Position: 1
            Type: 'float *'
    Properties:
      - Name: intPropertyToMangle
        PropertyKind: Instance
        Type: 'double *'
Functions:
  - Name: global_int_fun
    ResultType: 'char *'
    Parameters:
      - Position: 0
        Type: 'double *'
      - Position: 1
        Type: 'float *'
Globals:
  - Name: global_int_ptr
    Type: 'double (*)(int, int)'
SwiftVersions:
  - Version: 3.0
    Classes:
      - Name: A
        Methods:
          - Selector: "transform:integer:"
            MethodKind:      Instance
            NullabilityOfRet: O
            Nullability:      [ O, S ]
        Properties:
          - Name: explicitNonnullInstance
            PropertyKind:    Instance
            Nullability:     O
          - Name: explicitNullableInstance
            PropertyKind:    Instance
            Nullability:     N
